Background

Present-day environmental justice may reflect legacies of injustice in the past. The United States has a long history of racial segregation which is still visible. During the 1930s the Home Owners’ Loan Corporation (HOLC), as part of the New Deal, rated neighborhoods based on their perceived safety for real estate investment. Their ranking system, (A (green), B (blue), C (yellow), D (red)) was then used to block access to loans for home ownership. Colloquially known as “redlining”, this practice has had widely-documented consequences not only for community wealth, but also health.1 Redlined neighborhoods have less greenery2 and are hotter than other neighborhoods.3

Check out coverage by the New York Times.

A recent study found that redlining has not only affected the environments communities are exposed to, it has also shaped our observations of biodiversity.4 Community or citizen science, whereby individuals share observations of species, is generating an enormous volume of data. Ellis-Soto and co-authors found that redlined neighborhoods remain the most undersampled areas across 195 US cities. This gap is highly concerning, because conservation decisions are made based on these data.

Check out coverage by EOS.

Data

EJScreen

We will be working with data from the United States Environmental Protection Agency’s EJScreen: Environmental Justice Screening and Mapping Tool.

According to the US EPA website:

This screening tool and data may be of interest to community residents or other stakeholders as they search for environmental or demographic information. It can also support a wide range of research and policy goals. The public has used EJScreen in many different locations and in many different ways.

EPA is sharing EJScreen with the public:
- to be more transparent about how we consider environmental justice in our work,
- to assist our stakeholders in making informed decisions about pursuing environmental justice and,
- to create a common starting point between the agency and the public when looking at issues related to environmental justice.

EJScreen provides on environmental and demographic information for the US at the Census tract and block group levels. You will be working with block group data that has been downloaded from the EPA site. To understand the associated data columns, you will need to explore the Technical Documentation and column description spreadsheet available in the data folder. I also encourage you to explore the limitations and caveats of the data.

Mapping Inequality

A team of researchers, led by the Digital Scholarship Lab at the University of Richmond have digitized maps and information from the HOLC as part of the Mapping Inequality project.

We will be working with maps of HOLC grade designations for Los Angeles. Information on the data can be found here.5

Biodiversity observations

The Global Biodiversity Information Facility is the largest aggregator of biodiversity observations in the world. Observations typically include a location and date that a species was observed.

We will be working observations of birds from 2021 onward.

Legacy of Redlining Workflow

1. Investigate the legacy of redlining in current environmental (in)justice

Import libraries and data

Load relevant packages.

library(tidyverse)
library(sf)
library(plotly)
library(gt)

Read in EJScreen data and filter to Los Angeles County

# read in ejscreen data with direct filepath
la_county <- st_read("~/Documents/github/eds223-assignments/assignment-2-amandaherbst/data/EJSCREEN_2023_BG_StatePct_with_AS_CNMI_GU_VI.gdb/",
                    quiet = TRUE) %>% 
  # filter ejscreen to LA county
  filter(CNTY_NAME == "Los Angeles County")

Understanding present day environmental justice issues in LA

Wastewater Discharge

Find and visualize which LA census block groups are above the 95th percentile of national values for wastewater discharge.

# map of LA
# color census block groups by wastewater discharge
# add centroid for block groups above 95th percentile

# filter la dataset for block groups above 95th percentile for wastewater dischare
top_percentile <- la_county %>% 
  filter(P_PWDIS > 95)

# make centroids for block groups above 95th percentile
top_percentile_centroids <- st_centroid(top_percentile)

# map LA county and color census blocks by waste water discharge
m1 <- ggplot() +
  geom_sf(data = la_county, aes(fill = PWDIS),
          lwd = 0.1,
          color = 'gray') +
  scale_fill_viridis_c(direction = -1) +
  # add above 95th percentile centroids
  geom_sf(data = top_percentile_centroids,
          color = 'magenta') +
  labs(x = "Longtitude",
       y = "Latitude",
       fill = "Waste water discharge") +
  # choose x axis breaks so longitude is readable
  scale_x_continuous(breaks = c(-119, -118.6, -118.2, -117.8)) +
  theme_bw()

# make interactive to better see where the centroids are
ggplotly(m1)

In numbers

Find the percent of census block groups that have less than 5% of the population considered low income:

high_inc <- la_county %>% 
  # filter to block groups where % of low income is less than 0.05
  filter(LOWINCPCT < 0.05) %>% 
  # take the resulting number of rows and divide by the total number of block groups
  # multiply by 100 to get percent value
  nrow()/nrow(la_county) * 100

print(paste(round(high_inc,2), "% of LA census block groups have less than 5% of the population considered low income"))
## [1] "6.11 % of LA census block groups have less than 5% of the population considered low income"

Find the percent of census block groups that are: above the 80th percentile for Particulate Matter 2.5 AND above the 80th percentile for Superfund proximity

# percent of census block groups that are above 80th percentile for both PM 2.5 and Superfund proximity
pm_sf <- la_county %>% 
  filter(P_PM25 > 80 & P_PNPL > 80) %>% 
  nrow() / nrow(la_county) * 100

print(paste(round(pm_sf,2), "% of LA census block groups are above the 80th percentile for both PM 2.5 and Superfund proximity"))
## [1] "17.36 % of LA census block groups are above the 80th percentile for both PM 2.5 and Superfund proximity"

LA redlining

Import maps of HOLC grade designations for Los Angeles

LA_redlining <- st_read("https://dsl.richmond.edu/panorama/redlining/static/citiesData/CALosAngeles1939/geojson.json",
                        quiet = TRUE) %>%
  st_make_valid()

Visualize historical redlining boundaries in LA, indicating HOLC grade by color:

# plot redlining areas, color by HOLC Grade
ggplot() +
  geom_sf(data = LA_redlining, aes(fill = grade)) +
  labs(x = "Longtitude",
       y = "Latitude",
       fill = "HOLC Grade") +
  theme_bw()

Find the number of census block groups that fall within areas with HOLC grades:

  • the LA_redlining and la_county data are in different coordinate reference systems, so we need to reproject one of them before continuing
  • we can do a spatial inner join between the two datasets so that the resulting dataset contains only census block groups that are within areas with a historic HOLC grade.
# st_crs(LA_redlining)
# LA_redlinging is in EPSG:4326

# st_crs(la_county)
# la_county is in EPSG:3857

# transfrom LA_redlining to same crs as la_county
LA_redlining3857 <- st_transform(LA_redlining, "EPSG:3857")

# block groups that have intersecting geometries as LA_redlining HOLC grades
# left = FALSE for an inner join
block_groups_holc_join <- st_join(x = la_county, y = LA_redlining3857, left = FALSE)
holc_block_grps <- nrow(block_groups_holc_join)

print(paste(holc_block_grps, "census block groups in LA fall within areas with HOLC grades"))
## [1] "6388 census block groups in LA fall within areas with HOLC grades"

Based on EJScreen data, summarize current conditions in the census block groups that were within areas with a HOLC grade. We will group by HOLC grade to compare the conditions across areas that were historically graded A, B, C, and D. Let’s look at the average % low income, percentile for particulate matter 2.5, percentile for low life expectancy, and percentil for air toxics cancer risk.

# summary table of means grouped by grade
block_groups_holc_join %>%
  st_drop_geometry() %>% 
  group_by(grade) %>% 
  summarise(low_inc_pct_avg = mean(LOWINCPCT, na.rm = TRUE),
            p_pm25_avg = mean(P_PM25, na.rm = TRUE),
            p_low_life_exp_avg = mean(P_LIFEEXPPCT, na.rm = TRUE),
            p_cancer_avg = mean(P_CANCER, na.rm = TRUE)) %>% 
  gt() %>% 
  tab_header(title = "Current EJ Conditions in LA by HOLC grade")
Current EJ Conditions in LA by HOLC grade
grade low_inc_pct_avg p_pm25_avg p_low_life_exp_avg p_cancer_avg
A 0.1497511 72.16036 23.75982 44.00670
B 0.2420120 76.33898 37.42025 47.68659
C 0.3408981 78.81884 47.88017 54.55468
D 0.3919059 80.23700 53.03621 56.57589
NA 0.3581823 76.72973 50.12409 41.49324

Based on the averages calculated, the HOLC grade for a census block group in LA appears to be indicative of the percent of the population that is low income, as well as the percentiles they fall within for environmental justice indicators. Groups with a grade of “A” had the lowest average percent of low income (15%), and had an average of the lowest percentiles, comparatively, for PM 2.5, low life expectancy, and air toxics cancer risk. In comparison, areas with a grade of “D” had the highest average percent of low income (39%) and had the highest average percentiles for PM 2.5, low life expectancy, and air toxics cancer risk.

Investigate the legacy of redlining in biodiversity observations

Import citizen science bird observations from direct filepath and select observations from the year 2022. With another spatial inner join between LA_redlining and la_birds_22, filter for observations that fall within neighborhoods with HOLC grades. Then find the percent of observations within each redlining category and visualize the results in a plot.

  • always check for matching CRS’s!!
# read in birds data
la_birds <- st_read("~/Documents/github/eds223-assignments/assignment-2-amandaherbst/data/gbif-birds-LA",
                    quiet = TRUE)

# filter birds to 2022
la_birds_22 <- la_birds %>% 
  filter(year == 2022)

#check crs
# st_crs(la_birds_22)
# EPSG:4326
# st_crs(LA_redlining)
# EPSG:4326
# CRS matches!

# bird observations in neighborhoods with HOLC grades
# inner join using "left = FALSE"
holc_birds <- st_join(LA_redlining, la_birds_22, left = FALSE)

# total number of bird observations
tot_bird <- nrow(holc_birds)

# percent of bird observations by HOLC grade
holc_birds_pct <- holc_birds %>% 
  group_by(grade) %>% 
  summarize(bird_pct_obs = n()/tot_bird * 100) 


# plot % of bird observations by HOLC
ggplot(data = holc_birds_pct) +
  geom_col(aes(x = grade, y = bird_pct_obs, fill = grade),
           show.legend = FALSE) +
  labs(x = "HOLC Grade",
       y = "% Bird Observations",
       title = "Bird Observations in Redlining Categories") +
  theme_bw()

Since Ellis-Soto and co-authors found that redlined neighborhoods remain the most undersampled areas across 195 US cities, it is surprising that the largest share of bird observations are in historically redlined areas of Los Angeles. This could potentially be a result of LA’s population skyrocketing since 1933 and consequently leading to gentrification of redlined neighborhoods.


  1. Gee, G. C. (2008). A multilevel analysis of the relationship between institutional and individual racial discrimination and health status. American journal of public health, 98(Supplement_1), S48-S56.↩︎

  2. Nardone, A., Rudolph, K. E., Morello-Frosch, R., & Casey, J. A. (2021). Redlines and greenspace: the relationship between historical redlining and 2010 greenspace across the United States. Environmental health perspectives, 129(1), 017006.↩︎

  3. Hoffman, J. S., Shandas, V., & Pendleton, N. (2020). The effects of historical housing policies on resident exposure to intra-urban heat: a study of 108 US urban areas. Climate, 8(1), 12.↩︎

  4. Ellis-Soto, D., Chapman, M., & Locke, D. H. (2023). Historical redlining is associated with increasing geographical disparities in bird biodiversity sampling in the United States. Nature Human Behaviour, 1-9.↩︎

  5. Robert K. Nelson, LaDale Winling, Richard Marciano, Nathan Connolly, et al., “Mapping Inequality,” American Panorama, ed. Robert K. Nelson and Edward L. Ayers, accessed October 17, 2023, https://dsl.richmond.edu/panorama/redlining/↩︎